package structure

import (
	"container/list"
	"fmt"
)

func UseArray() {
	var n [10]int /* n 是一个长度为 10 的数组 */
	var i, j int

	/* 为数组 n 初始化元素 */
	for i = 0; i < 10; i++ {
		n[i] = i + 100 /* 设置元素为 i + 100 */
	}

	/* 输出每个数组元素的值 */
	for j = 0; j < 10; j++ {
		fmt.Printf("Element[%d] = %d\n", j, n[j])
	}
}

func GetArray() [10]int {
	var n [10]int
	var i int

	for i = 0; i < 10; i++ {
		n[i] = i + 100
	}
	return n
}
func del() {
	l := list.New()
	l.PushFront("Hello")
	l.PushFront("HaiCoder")
	l.PushFront(nil)
	fmt.Printf("before:%v\n", l)
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Printf("del:%v\n", e.Value)
	}
	fmt.Printf("after:%v\n", l)
}

//构建一个hash表来进行数据删除
// 删除Hello
func delByHash(l *list.List) {

	fmt.Printf("before:%v [", l.Len())
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Printf("%v ", e.Value)
	}
	fmt.Printf("]\n")

	// 构建map表
	_map := make(map[string]*list.Element)
	for e := l.Front(); e != nil; e = e.Next() {
		_map[e.Value.(string)] = e
	}

	//hello 链表指针
	e := _map["Hello"]

	l.Remove(e)
	fmt.Printf("after:%v [", l.Len())
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Printf("%v ", e.Value)
	}
	fmt.Printf("]\n")
}
